package day06;

import java.util.Random;
import java.util.Scanner;

//练习
/*
方法的练习：要求：
    定义say()无参无返回值方法，调用测试
    定义say()有一个参无返回值方法，调用测试
    定义say()有两个参无返回值的方法，调用测试
    定义sum()两个参有返回值方法，调用测试
    定义generateArray()用于生成整型数组填充随机数并返回数组，调用测试
综合练习一：
    需求:<<主持人大赛>>有N位评委给选手打分
    选手的最终得分为:去掉最高分和最低分之后的N-2位评委的平均分
    要求:使用方法实现
综合练习二：
    完成猜数字小游戏
    要求：使用while(true)自造死循环实现
 */
public class Practice {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        Random rand = new Random();
        say();
        say(1);
        say(2,3);
        int a = sum(4,5);
        System.out.println(a);
        System.out.println("-----------------------");
        int[] b = generateArray(10);
        for (int i = 0; i < b.length; i++) {
            System.out.println(b[i]);
        }
        //System.out.println(b);
        System.out.println("-----------------------");
        int num = rand.nextInt(100);    //0到99
        System.out.println(num);    //作弊
        while(true){    //死循环
            System.out.println("猜吧！");
            int guess = scan.nextInt();
            if(guess > num){
                System.out.println("猜大了");
            } else if (guess < num) {
                System.out.println("猜小了");
            }else {
                System.out.println("恭喜你猜对了！");
                break;  //跳出循环
            }
        }
        double[] scores = inputData(6); //1）录入评委的评分
        double avg = calAvg(scores);       //2）计算平均分
        System.out.println("平均分位："+avg);
    }
    public static void say() {
        System.out.println("无参无返回值");
    }
    public static void say(int num) {
        System.out.println("有参无返回值"+num);
    }
    public static void say(int num1, int num2) {
        System.out.println("两参无返回值"+num1+"+"+num2);
    }
    public static int sum(int num1, int num2) {
        int sum = num1 + num2;
        return sum;
    }
    public static int[] generateArray(int n) {
        int[] arr = new int[n];
        Random rand = new Random();
        for (int i = 0; i < arr.length; i++) {
            arr[i] = rand.nextInt(100);
        }
        return arr;
    }
    //该方法用于录入N位评委的评分
    public static double[] inputData(int n){
        double[] scores = new double[n];    //评分数组
        Scanner scan = new Scanner(System.in);
        for(int i = 0; i < n; i++){
            System.out.println("请录入第"+(i+1)+"位评委的分数：");
            scores[i] = scan.nextDouble();
        }
        return scores;
    }
    //该方法用于计算平均分
    public static double calAvg(double[] scores){
        double total = 0.0;         //总分
        double max = scores[0];     //假设第一个元素为最高分
        double min = scores[0];     //假设第一个元素为最低分
        for(int i = 0; i < scores.length; i++){
            total += scores[i];     //累加所有评分
            if(scores[i] > max){    //找最高分
                max = scores[i];
            }
            if(scores[i] < min){    //找最低分
                min = scores[i];
            }
        }
        //计算平均分---总分减掉最高分和最低分后，除以（评委数-2）
        double avg = (total-max-min)/ (scores.length-2);   //平均分
        return avg;
    }
}
